Przykad 9.2. Rozwizanie problemu otoczki wypukej za pomoc algorytmu wyznaczania otoczki wypukej
public class ConvexHullScan implements IConvexHull {

   public IPoint [] compute (IPoint[] points) {
      // Sortuj wedug wsprzdnej x (a jeli ==, to wedug y)
      int n = points.length;
      new HeapSort<IPoint>().sort(points, 0, n-1, IPoint.xy_sorter);
      if (n < 3) { return points; }

      // Oblicz otoczk grn, zaczynajc od dwu skrajnych punktw z lewej
      PartialHull upper = new PartialHull(points[0], points[1]);
      for (int i = 2, i < n; i++) {
         upper.add(points[i]);
         while (upper.hasThree() && upper.areLastThreeNonRight()) {
            upper.removeMiddleOfLastThree();
         }
      }

      // Oblicz otoczk doln, zaczynajc od dwu skrajnych punktw z prawej
      PartialHull lower = new PartialHull(points[n-1], points[n 2]);
      for (int i = n-3, i >= 0; i--) {
         lower.add(points[i]);
         while (lower.hasThree() && lower.areLastThreeNonRight()) {
            lower.removeMiddleOfLastThree();
         }
      }

      // Przy czeniu usu podwojone punkty kocowe
      IPoint[] hull = new IPoint[upper.size()+lower.size()-2];
      System.arraycopy(upper.getPoints(), 0, hull, 0 upper.size());
      System.arraycopy(lower.getPoints(), 1, hull,
                       upper.size(), lower.size()-2);
      return hull;
   }
}
